#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

/*
 *
C文件操作

作业内容
1.考察fopen, fread, fwrite, fseek, fclose等函数的使用

2.要求：

2.1使用代码打开当前路径下的“bite”文件（如果文件不存在在创建文件），向文件当中写入“linux so easy!”.

2.2 在从文件当中读出文件当中的内容， 打印到标准输出当中； 关闭文件流指针

3.提交要求：提交代码截图， 提交代码执行之后的截图
 * */

//int main()
//{
//  FILE* pf = fopen("bite", "w");
//  const char* inbuff = "linux so easy!";
//  fwrite(inbuff, strlen(inbuff), 1, pf);
//  fclose(pf); pf = NULL;
//  
//  pf = fopen("bite", "r");
//  char outbuff[1024] = { 0 };
//  fread(outbuff, sizeof(outbuff), 1, pf);
//  printf("%s\n", outbuff);
//  fclose(pf);
//  return 0;
//}
//

/*
 *系统调用文件操作

作业内容
1.考察open， read, write, lseek， close等函数的使用。同时理解文件描述符

2.要求:

2.1 使用代码打开当前路径下的“bite”文件（如果文件不存在在创建文件），向文件当中写入“i like linux!”.

2.2 在从文件当中读出文件当中的内容， 打印到标准输出当中； 关闭文件描述符

3.提交要求：提交代码截图， 提交代码执行之后的截图
 * */

//int main()
//{
//  int fd = open("bite", O_WRONLY | O_CREAT | O_TRUNC, 0666);
//  if(fd < 0) { perror("open err"); exit(1); }
//  const char* inBuff = "i like linux!\n";
//  write(fd, inBuff, strlen(inBuff));
//  close(fd);
//
//  fd = open("bite", O_RDONLY);
//  if(fd < 0) { perror("open err"); exit(1); }
//  char outBuff[1024] = { 0 };
//  ssize_t s = read(fd, outBuff, sizeof(outBuff));
//  outBuff[s] = '\0';
//  close(fd);
//  printf("%s", outBuff);
//  return 0;
//}
//

/*
 *验证：进程替换时，task_struct的修改情况
 * */

int main()
{
  printf("i am a task, pid:%d\n", getpid());
  sleep(3);
  int ret = execl("./execTestDir/out", "out");
  if(ret < 0) { perror("execl err"); exit(1); }
  return 0;
}
